
********************************
■■■■
■ ■ ■ ■
■ ■■■ ■■■
■ ■ ■ ■
■■■■
〜基礎から ★ C++Programing〜
********************************
【注意】 このマガジンは、最大化してお読みください。
また、等角フォントでお読みください。
(MS ゴシックなど)
********************************
発行者 むーくん
マガジンNO. 41(4−2)
発行日 2000/1/8
講読人数 2000名ぐらい
マガジンID 0000050494
このマガジンは、まぐまぐから配信されています。
********************************
★あいさつ★
東京では雪が降りました。久しぶりにまとまった雪です。
子供の頃はわくわくしたのになぁ。
いつからこんな風になっちゃったんだろう。
たまには雪だるまでも、作りたいですね。(^_^)v
********************************
★目次★
・制御の流れ
・無条件分岐
・「悪」な理由1
・「悪」な理由2
・サンプルプログラム
・予告
********************************
★制御の流れ★
今まで、軽く流してきましたが、実は重要な項目を無視しています。
それは、”プログラムの流れ方”です。
C++では、プログラムは、上から下に向かって流れていきます。
例えば、
cout << "Before" << endl;
cout << "After" << endl;
では、上のものが先、下のものは後に実行されます。
逆は絶対にあり得ません!!!
実は、これでは、困ることもあるのです。
例えば、入力確認。
ユーザーが間違った入力をしたら、もう一度入力まで戻りたいでしょう。
でも、流れには逆らえないから、戻ることはできません。
では、入力の回数を複数にしたらどうでしょう。100回とか。
これでも、101回ミスがあったらどうしようもありませんし、
はっきり言って、ムダすぎます。
なおかつ、何のために100回の入力があるのか、意味が分かりません。
(意味が分かりにくい)
これを解決するには、制御をコントロールできるようにすればよいのです。
だから下までいったプログラムを、もう一度上に戻すような操作が
必要になるのです。
********************************
★無条件分岐★
制御の流れを変えるもので、一番簡単なのが、無条件分岐です。
何の脈絡もなく、他の行にジャンプするのです。
但し、無条件分岐は、「悪」といわれています。
最新のプログラミング言語では、これは、無くされていっています。
だから、本マガジンでは、詳しい文法などは紹介しません。
サンプルプログラムは、載せておくので、試しに実行してみてください。
********************************
★「悪」な理由1★
無条件分岐は、論理と関係なくイキナリジャンプできるので、
あっちこっちに行ったり来たりできます。
それが、2,3個ならば、混乱しませんが、
何個も何個も複雑に絡み合って、どこから来て、次はどこにジャンプ
するのかなど、さっぱり分からなくなってしまいます。
(何万行もあるプログラムでは、もはや追跡は不可能です)
丁度、家電製品のコードのような状態です。
たこ足配線したりして、コードが絡まると、どれがどれだかさっぱり
分かりませんよね?
それが、プログラムで起きるわけです。
エラーがどこで起きてるか分からないし、最悪です。
こういうプログラムを「スパゲッティー・プログラム」といいます。
********************************
★「悪」な理由2★
論理と関係ないジャンプをくり返すので、コンパイラがパターンを
分析しにくく、効率の良いソフトウェアを作成できません。
「ある決まり」に、のっとってプログラムの流れを制御すると
いうことが大事なのです。
********************************
★サンプルプログラム★
#include<iostream>
using namespace std;
int main(void){
int a;
a = 5;
goto there; /* thereの行に飛ぶ */
a = a + 100; /* thereに飛んでしまうので、実行されない*/
there: cout << "a = " << a; /* 飛ぶ先 */
return 0;
}
警告(warning)がでますが、無視して実行してください。
a = 5
と表示されるはずです。
********************************
★予告★
・「連結」について学習します。
********************************
講読解除はこちら
http://members.tripod.co.jp/mukun_mmg/mmg/cpp.html
バックナンバーはこちら
http://members.tripod.co.jp/mukun_mmg/mmg/cpp.html
内容について質問やご意見など
smukun@hotmail.com
筆者のWebサイト(むーくんの理学的なんでも講座)
http://members.tripod.co.jp/mukun_mmg/
************************************